package org.natcor.bio.domain;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
@Table(name = "lugar")
public class Lugar {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idlugar")
	private Integer codigo;

	@Column(name = "nombre")
	private String nombre;

	@Column(name = "descripcion")
	private String descripcion;

	@Column(name = "urlprofile")
	private String urlProfile;

	@ManyToOne
	@JoinColumn(name = "provincia")
	private Provincia provincia;

	@ManyToMany(cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinTable(name = "lugar_actividad", joinColumns = { @JoinColumn(name = "lugar") }, inverseJoinColumns = { @JoinColumn(name = "actividad") })
	private List<Actividad> actividades;

	@ManyToMany(cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinTable(name = "lugar_fauna", joinColumns = { @JoinColumn(name = "lugar") }, inverseJoinColumns = { @JoinColumn(name = "fauna") })
	private List<Fauna> fauna;

	@ManyToMany(cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinTable(name = "lugar_flora", joinColumns = { @JoinColumn(name = "lugar") }, inverseJoinColumns = { @JoinColumn(name = "flora") })
	private List<Flora> flora;

	public Lugar() {

	}

	public Lugar(String nombre, String descripcion, String urlProfile,
			Provincia provincia, List<Actividad> actividades,
			List<Fauna> fauna, List<Flora> flora) {
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.urlProfile = urlProfile;
		this.provincia = provincia;
		this.actividades = actividades;
		this.fauna = fauna;
		this.flora = flora;
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getUrlProfile() {
		return urlProfile;
	}

	public void setUrlProfile(String urlProfile) {
		this.urlProfile = urlProfile;
	}

	public Provincia getProvincia() {
		return provincia;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	public List<Actividad> getActividades() {
		return actividades;
	}

	public void setActividades(List<Actividad> actividades) {
		this.actividades = actividades;
	}

	public List<Fauna> getFauna() {
		return fauna;
	}

	public void setFauna(List<Fauna> fauna) {
		this.fauna = fauna;
	}

	public List<Flora> getFlora() {
		return flora;
	}

	public void setFlora(List<Flora> flora) {
		this.flora = flora;
	}

	public void addActividad(Actividad actividad) {

	}

	public void addFauna(Fauna fauna) {

	}

	public void addFlora(Flora flora) {

	}

}
